Symbiotic 4: Beyond Reachability - (Competition Contribution)

نویسندگان

  • Marek Chalupa
  • Martina Vitovská
  • Martin Jonás
  • Jiri Slaby
  • Jan Strejcek
چکیده

The fourth version of Symbiotic brings a brand new instrumentation part, which can now instrument the analyzed program with code pieces checking various specification properties. As a consequence, Symbiotic 4 participates for the first time also in categories focused on memory safety. Further, we have ported both Symbiotic and Klee to llvm 3.8 and added new features to the slicer which is now modular and easily extensible. 1 Verification Approach and Software Architecture Symbiotic implements the approach of [6] combining instrumentation, slicing, and symbolic execution [4] to detect errors in C programs. While all the previous releases [7,5,2] focus on checking reachability of an error location, Symbiotic 4 can check any property definable by a finite state machine. For example, the finite state machine of Figure 1 describes the double free error. Intuitively, for every allocated block of memory we create a copy of the state machine that tracks its current status. An error state is reached if the block is deallocated twice. Hence, the instrumentation reduces property checking to unreachability checking as the program violates the property iff the error state is reachable. Creation and tracking of the state machine is performed by code instrumented to the original program. In fact, the brand new instrumentation implemented in Symbiotic works more generally. It gets a JSON file with instrumentation rules. Every rule specifies a function call to be inserted before (or after) each occurrence of a given sequence of instructions. Bodies of called functions are then defined in a separate file written in C. Each instrumentation rule can be refined using an output of a specified static analysis. For example, a code checking NULL dereference does not have to be instrumented to locations where a suitable static analysis guarantees that the corresponding pointer cannot be NULL. For SV-COMP 2017, we have prepared instrumentation rules for checking memory safety properties. For overflow property, we let clang sanitizer to instrument the program. We do not support checking termination property as it cannot be simply translated to reachability analysis. The workflow of Symbiotic 4 is illustrated by Figure 2. As the first step, we check that the verified property is not termination. Then we translate the * The research was supported by The Czech Science Foundation, grant GA15-17564S. † Corresponding author: [email protected]

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Symbiotic: Synergy of Instrumentation, Slicing, and Symbolic Execution - (Competition Contribution)

Symbiotic is a tool for detection of bugs described by finite state machines in C programs. The tool combines three well-known techniques: instrumentation, program slicing, and symbolic execution. This paper briefly describes the approach of Symbiotic including its strengths, weaknesses, and modifications for SV-COMP 2013. Architecture and installation of the tool are described as well. 1 Verif...

متن کامل

Proving Reachability Using FShell - (Competition Contribution)

FShell is an automated white-box test-input generator for C programs, computing test data with respect to user-specified code coverage criteria. The pillars of FShell are the declarative specification language FQL (FShell Query Language), an efficient back end for computing test data, and a mathematical framework to reason about coverage criteria. To solve the reachability problem posed in SV-C...

متن کامل

DIRECTED UNFOLDING Reachability Analysis of Concurrent Systems & Applications to Automated Planning

The factored state representation and concurrency semantics of Petri nets are closely related to those of classical planning models, yet automated planning and Petri net analysis have developed independently, with minimal and mainly unconvincing attempts at crossfertilisation. This thesis exploits the relationship between the formal reachability problem, and the automated planning problem, via ...

متن کامل

Host-symbiont conflict over the mixing of symbiotic lineages.

Host and symbiont often conflict over patterns of symbiont transmission. Symbionts favour dispersal out of the host to avoid competition with close relatives. Migration leads to competition among different symbiotic lineages, with potentially virulent side-effects on the host. The hosts are favoured to restrict symbiont migration and reduce the virulent tendencies of the symbionts. Reduced mixi...

متن کامل

Mixing of Symbiotic Lineages

Host and symbiont often conflict over patterns of symbiont transmission. Symbionts favour dispersal out of the host to avoid competition with close relatives. Migration leads to competition among different symbiotic lineages, with potentially virulent side-effects on the host. The hosts are favoured to restrict symbiont migration and reduce the virulent tendencies of the symbionts. Reduced mixi...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2017